package main

import (
	"encoding/json"
	"fmt"
)

/*
// 定义返回的数据格式，将返回的数据用json的方式打印出来
// Code, Message, Data
// s.json() => 将它转换成json格式（string）

后端开发：API => 访问url => 返回数据（无页面） => 访问者
标准化返回：
{
	”code": 1001,
	"message": "参数不完整“,
	"data": {}/[]/other
}
*/

type API struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data"`
}

func main() {
	// 字典
	a1 := API{
		Code:    1001,
		Message: "user1",
		Data:    map[string]interface{}{},
	}

	// 向字典中添加数据
	dataMap := a1.Data.(map[string]interface{})
	dataMap["name"] = "高辉"
	dataMap["age"] = 20

	// 数组
	a2 := API{
		Code:    1002,
		Message: "user2",
		Data:    []string{},
	}

	// 向数组中添加数据
	dataSlice := a2.Data.([]string)
	dataSlice = append(dataSlice, "高辉", "高菲", "高飞")
	a2.Data = dataSlice // 将修改后的切片重新赋值回 Data 字段

	// 其他类型数据
	a3 := API{
		Code:    1003,
		Message: "user3",
		Data:    "一些具体的数据",
	}

	bmarshal1, err1 := json.Marshal(a1)
	if err1 == nil {
		fmt.Println(string(bmarshal1))
	} else {
		fmt.Println(err1)
	}

	bmarshal2, err2 := json.Marshal(a2)
	if err2 == nil {
		fmt.Println(string(bmarshal2))
	} else {
		fmt.Println(err2)
	}

	bmarshal3, err3 := json.Marshal(a3)
	if err3 == nil {
		fmt.Println(string(bmarshal3))
	} else {
		fmt.Println(err3)
	}
}

